1. Field of the Invention
The present invention is directed to a data storage system designed to allow the size of records available for storing data to freely vary from record to record and over time and, more particularly, to a system that provides linked record segments where the segments can be added or subtracted to allow the record size to change, where the segments can be separately and randomly stored within data storage and where the system automatically consolidates the segments at a single location as space becomes available.
2. Description of the Related Art
The structure of conventional file systems is dictated by the application program designer when the application program is being designed. For example, during the design stage, the programmer prepares a data definition which defines the types and sizes of records in the file and defines the types and sizes of fields within each record. As the application program is created and debugged, the size, number and types of records, segments and fields can change. However, once the program is debugged, the sizes of the records, segments and fields within a record are fixed. If a user desires to change the size of a record, the application program must be redesigned and, unless the size definitions are changed, the user cannot enter data into a record or a field which is larger than the space originally defined for that record. Since it is common for a user to want to change the amount of data being stored in a record or a field during the life of a program, the cost and time required to change the data definitions for the program to customize the application program for the user can be large. This problem becomes much worse if the application program is part of a package distributed to many different users where the users want change the sizes of different records or fields. The maintenance problems associated with such changes also increase especially if a customized program is created and maintained for each user. This problem is becoming more serious because of the desire to allow the users' of software to freely change the sizes of data fields used for entering or outputting data on screen displays or terminals simply by entering more or less data for that record or field. The trend toward allowing customization of the terminal display by the user is thereby creating database maintenance problems. That is, the data definition redefinition problem is being further aggravated by the desire to increase the flexibility of the man machine interface.
One solution to this problem is to provide each record or field with a size that is sufficiently large so that any possible desired length of data can fit within the record or the field. This is done at the design stage in a discussion between the program designers. This is an impractical solution to the problem and is particularly inefficient in the utilization of the storage. Another solution is to maintain a master application program in such a way as to take into account each of the changes requested by all the users, so that the size of the records or fields grow until the worst case for each record is satisfied. This wastes memory space and requires that all users be provided with an updated program each time a change to the master program is made. This also requires that the users submit change requests to the program designer and therefore does not satisfy the flexibility need associated with the man machine interface. This solution is also an expensive solution.
What is needed is a system which will allow record or field size to change dynamically without requiring redefinition of the sizes of the records or fields and which allows the user to enter a desired amount of data no matter what is the record or field size.